Software life cycle management refers to the governance, development, and maintenance of computer software. Specifically, it typically encompasses requirements management, software architecture, computer programming, software testing, software management, change management, product management, and release management. The “life cycle” referred to involves the complete life of a software product, from design stages to distribution and release to maintenance.
While certain aspects of software life cycle management have been automated, it is still a largely manual process. For example, when testing computer software, a developer may utilize testing tools to help create test scenarios for the software, but the decisions as to which environments and configurations/settings to test are determined by a human. Furthermore, while tools exist to aid in update management, such as an automated tool that checks for an updated version of a software product every time the software product is run, such update management tools are limited in that they are only able to make a determination as to whether to update one particular software product with a newer version of the same software product. They are unable to, for example, determine when a different software product may be appropriate based on changed needs and/or changed capabilities of various software products.